package com.zw.mes.module.system.mapper;

import com.zw.mes.entity.sys.Role;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Description:
 *
 * @Author: China.sgl
 * @Date: 2019/9/16 09:11
 */
public interface RoleMapper {

    /**
     * 按 用户ID 查询角色
     *
     * @param uId 用户ID
     * @return 角色集合
     */
    List<Role> findByUserId(Integer uId);

    /**
     * 按 角色名 查询角色
     *
     * @param name 角色名
     * @return 角色
     */
    Role findByName(String name);

    /**
     * 批量添加角色权限关联关系
     *
     * @param id            角色
     * @param menuIds       权限ID数组
     */
    void batchInsertRoleMenu(@Param("id") Integer id, @Param("menuIds") Integer[] menuIds);

    /**
     * 根据 角色id 删除角色权限关联关系
     *
     * @param rId 角色id
     */
    void deleteRoleMenuByRoleId(Integer rId);

    /**
     * 查询所有角色
     *
     * @param role role
     * @return list
     */
    List<Role> findByCondition(Role role);

    /**
     * 按 pid 修改状态
     *
     * @param pId 父级ID
     * @param status 状态
     * @return 行数
     */
    int updateStatusByPid(@Param("pId") Integer pId, @Param("status") Integer status);

    /**
     * 按 id 修改状态
     *
     * @param id ID
     * @param status 状态
     * @return 行数
     */
    int updateStatusByIdWithRecursion(@Param("id") Integer id, @Param("status") int status);
}
